//package org.hard.controller;
//
//import com.netflix.hystrix.*;
//
///**
// * @author: 王林博
// * @date: 2022年08月10日 9:21
// */
//public class GetStockServiceCommand  extends HystrixCommand<List<WcPendantTab>> {
//
//    private WcPendantTabService wcPendantTabService;
//    private WcPendantTab tab;
//
//    protected GetStockServiceCommand(WcPendantTabService wcPendantTabService, WcPendantTab tab) {
//        super(setter());
//        this.wcPendantTabService = wcPendantTabService;
//        this.tab = tab;
//    }
//
//    private static HystrixCommand.Setter setter(){
//        // 服务分组，默认一个服务名一个组
//        HystrixCommandGroupKey groupKey = HystrixCommandGroupKey.Factory.asKey("stock");
//        // 服务标识，默认当前执行的方法名称
//        HystrixCommandKey commandKey = HystrixCommandKey.Factory.asKey("getStock");
//        // 线程池名称，相同线程池名称的线程池是同一个
//        HystrixThreadPoolKey threadPoolKey = HystrixThreadPoolKey.Factory.asKey("stock-pool");
//        // 线程池配置
//        HystrixThreadPoolProperties.Setter threadPoolProperties = HystrixThreadPoolProperties.Setter()
//                // 最大并发执行数，默认10
//                .withCoreSize(10)
//                // 存活时间（控制一个线程从实用完成到被释放的时间），默认1min
//                .withKeepAliveTimeMinutes(5)
//                // BlockingQueue的最大长度，正数：队列将从同步队列改为阻塞队列，默认-1
//                .withMaxQueueSize(Integer.MAX_VALUE)
//                // 拒绝请求的临界值，默认5
//                .withQueueSizeRejectionThreshold(100);
//        // 命令属性配置
//        HystrixCommandProperties.Setter commandProperties = HystrixCommandProperties.Setter()
//                // 隔离策略：THREAD(线程池_默认)、SEMAPHORE(信号量)
//                .withExecutionIsolationStrategy(HystrixCommandProperties.ExecutionIsolationStrategy.THREAD);
//        return Setter
//                .withGroupKey(groupKey)
//                .andCommandKey(commandKey)
//                .andThreadPoolKey(threadPoolKey)
//                .andThreadPoolPropertiesDefaults(threadPoolProperties)
//                .andCommandPropertiesDefaults(commandProperties);
//    }
//
//    // 执行任务
//    @Override
//    protected List<WcPendantTab> run() throws Exception {
//        return wcPendantTabService.queryAll(this.tab);
//    }
//
//    // fallback
//    @Override
//    protected List<WcPendantTab> getFallback() {
//        return null;
//    }
//
//}
